جزوه · فصل ششم · جلسه ۶۵ · انواع زبان‌ها و Localization ← بازگشت به فهرست
📘 فصل ششم · جلسه ۶۵ انواع زبان‌ها و Localization
📅 تاریخ: یکشنبه، ۱ شهریور ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
این جلسه یکی از مباحث مهم در LPIC (بخش ۱۰۶) است. تفاوت ASCII، ISO-8859، Unicode و UTF را حتماً حفظ کنید.
🌍 قبل از شروع، یه مثال ساده:

فرض کن می‌خوای به یه خارجی پیام بدی. باید به زبونی که می‌فهمه براش بنویسی. توی دنیای کامپیوتر هم همینطوره! سیستم‌ها با صفر و یک کار می‌کنن، اما برای اینکه با ما انسان‌ها ارتباط برقرار کنن، باید زبان ما رو بلد باشن. اینجاست که Character Sets و Localization وارد ماجرا می‌شن!

▍ Localization چیست؟

Localization (بومی‌سازی) به معنی سازگار کردن سیستم با زبان، فرهنگ و قوانین یک منطقه خاص است. این شامل موارد زیر می‌شود:

🔑 اصل مهم: هر سیستم با صفر و یک کار می‌کند. اما برای تعامل با انسان‌ها، باید با زبان آنها صحبت کند. اینجاست که Character Sets وارد ساختار می‌شوند.

▍ Character Sets (مجموعه کاراکترها)

Character Set یک سری کدهای استاندارد است که برای تفسیر و نمایش کاراکترهای هر زبانی استفاده می‌شود. در طول تاریخ، چهار دسته اصلی از Character Sets شکل گرفته‌اند:

🔴 ASCII

  • ساختار: ۷ بیت (در عمل ۱ بایت = ۸ بیت).
  • کاراکترها: فقط ۱۲۸ کاراکتر (حروف a-z, A-Z, اعداد ۰-۹، علائم پایه).
  • مزیت: ساده، سریع، پایه‌ی بسیاری از سیستم‌ها.
  • محدودیت: فقط زبان انگلیسی؛ هیچ پشتیبانی از زبان‌های دیگر مثل فارسی یا عربی.

🟠 ISO-8859

  • ساختار: ۸ بیت (۲۵۶ کاراکتر).
  • خانواده: چندین نسخه برای زبان‌های مختلف:
    • ISO-8859-1 → لاتین غربی (انگلیسی، فرانسوی، آلمانی)
    • ISO-8859-5 → سیریلیک (روسی)
    • ISO-8859-6 → عربی
    • ISO-8859-9 → ترکی
  • مزیت: پوشش زبان‌های اروپایی و برخی زبان‌های دیگر.
  • معایب: ناسازگاری بین نسخه‌ها؛ پشتیبانی محدود از زبان‌های غیراروپایی.

🔵 Unicode

  • ساختار: استاندارد جهانی برای همه زبان‌ها و نمادها.
  • پوشش: بیش از ۱۴۹,۰۰۰ کاراکتر شامل زبان‌ها، نمادها، ریاضی، ایموجی.
  • مزیت: یک استاندارد واحد برای همه زبان‌ها؛ پایان مشکل ناسازگاری.
  • محدودیت: نیاز به روش‌های رمزگذاری برای ذخیره‌سازی و انتقال (UTF).
ترتیب تاریخی: ASCII → ISO-8859 → Unicode (UTF)
Unicode یک استاندارد است، در حالی که UTF روش پیاده‌سازی آن است.

▍ انواع UTF (روش‌های رمزگذاری Unicode)

هدف UTF: تبدیل کدپوینت‌های Unicode به بایت‌ها (برای ذخیره‌سازی و انتقال).

نوع UTF توضیح کاربرد
UTF-8 متغیر طول (۱ تا ۴ بایت). سازگار با ASCII. پرکاربردترین در لینوکس و وب. ✅ لینوکس، وب (HTML)، اکثر برنامه‌های مدرن
UTF-16 متغیر طول (۲ یا ۴ بایت). رایج در ویندوز و جاوا. ✅ ویندوز، جاوا، سی‌شارپ
UTF-32 ثابت طول (۴ بایت). ساده برای پردازش، ولی پرمصرف در حافظه. ✅ برنامه‌هایی که نیاز به پردازش سریع دارند (کمتر استفاده می‌شود).
UTF-8 در لینوکس و وب پیش‌فرض است و با ASCII سازگاری کامل دارد.

▍ مدیریت Localization در لینوکس

• دستور locale

این دستور تنظیمات فعلی Localization را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ locale LANG=en_US.UTF-8 LANGUAGE=en_US LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=

توضیح: این خروجی نشان می‌دهد که تنظیمات زبان به en_US.UTF-8 (انگلیسی آمریکا با UTF-8) تنظیم شده است.

• دستور locale -ck

این دستور اطلاعات کامل‌تری درباره یک دسته خاص از تنظیمات محلی نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ locale -ck LC_TIME

توضیح: نمایش تنظیمات مربوط به قالب تاریخ و زمان.

برای دیدن لیست تمام زبان‌های پشتیبانی‌شده در سیستم از دستور locale -a استفاده کنید.

▍ تغییر Localization

• روش ۱: با استفاده از متغیرهای محیطی

┌──(ya3in㉿kali)-[~] └─$ export LANG=fa_IR.UTF-8

توضیح: این دستور زبان سیستم را به فارسی ایران با UTF-8 تغییر می‌دهد (فقط برای جلسه فعلی).

• روش ۲: با دستور localectl (دائمی)

┌──(ya3in㉿kali)-[~] └─$ localectl set-locale LANG=fa_IR.UTF-8

توضیح: این دستور زبان سیستم را به‌طور دائمی (برای همه جلسات) تغییر می‌دهد.

فرق export و localectl: export موقتی است و فقط برای جلسه فعلی، اما localectl دائمی است و در ری‌بوت نیز باقی می‌ماند.

▍ جدول خلاصه Character Sets

Character Set اندازه (بیت) تعداد کاراکتر پوشش زبان مزیت محدودیت
ASCII ۷ ۱۲۸ فقط انگلیسی ساده و سریع فقط انگلیسی
ISO-8859 ۸ ۲۵۶ زبان‌های اروپایی پوشش چند زبان ناسازگاری بین نسخه‌ها
Unicode - ۱۴۹,۰۰۰+ همه زبان‌ها استاندارد جهانی نیاز به رمزگذاری (UTF)
UTF-8 ۸-۳۲ همه Unicode همه زبان‌ها سازگار با ASCII، محبوب متغیر طول (پیچیدگی)
✅ جمع‌بندی نهایی برای امتحان:
  • Localization: سازگاری سیستم با زبان، فرهنگ و قوانین منطقه.
  • ASCII: ۷ بیت، فقط ۱۲۸ کاراکتر، فقط انگلیسی.
  • ISO-8859: ۸ بیت، ۲۵۶ کاراکتر، زبان‌های اروپایی.
  • Unicode: استاندارد جهانی، بیش از ۱۴۹,۰۰۰ کاراکتر.
  • UTF-8: رمزگذاری Unicode (۱-۴ بایت)، سازگار با ASCII، پیش‌فرض لینوکس و وب.
  • دستورات: locale (مشاهده)، localectl (تغییر دائمی)، export LANG= (تغییر موقتی).